package javajavado.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;

import javajavado.clases.Votacion;
import javajavado.excepcion.DAOExcepcion;
import javajavado.util.ConexionBD;

public class VotacionDAO extends BaseDAO{
	
	//REGISTRAR REUNIONES
		public Votacion insertar(Votacion vo) throws DAOExcepcion {
			String query = "insert into Votacion(Votacion,Idea_idIdea,Invitado_idInvitado) values (?,?,?)";
			Connection con = null;
			PreparedStatement stmt = null;
			ResultSet rs = null;
			try {
				con = ConexionBD.obtenerConexion();
				stmt = con.prepareStatement(query);
				stmt.setInt(1, vo.getIdVotacion());
				stmt.setInt(2, vo.getIdeaIdIdea());
				stmt.setInt(3, vo.getInvitadoIdInvitado()); 
				
				int i = stmt.executeUpdate();
				if (i != 1) {
					throw new SQLException("No se pudo insertar");
				}
				// Obtener el ultimo id
				int id = 0;
				query = "select last_insert_id()";
				stmt = con.prepareStatement(query);
				rs = stmt.executeQuery();
				if (rs.next()) {
					id = rs.getInt(1);
				}
				vo.setIdVotacion(id);

			} catch (SQLException e) {
				System.err.println(e.getMessage());
				throw new DAOExcepcion(e.getMessage());
			} finally {
				this.cerrarResultSet(rs);
				this.cerrarStatement(stmt);
				this.cerrarConexion(con);
			}
			return vo;
		}
		
		// LISTAR REUNIONES
		public Collection<Votacion> listar() throws DAOExcepcion {
			Collection<Votacion> c = new ArrayList<Votacion>();
			Connection con = null;
			PreparedStatement stmt = null;
			ResultSet rs = null;
			try {
				con = ConexionBD.obtenerConexion();
				String query = "select idVotacion,Votacion,Idea_idIdea,Invitado_idInvitado from votacion order by idVotacion";
				stmt = con.prepareStatement(query);
				rs = stmt.executeQuery();
				while (rs.next()) {
					Votacion vo = new Votacion();
					vo.setIdVotacion(rs.getInt("idReunion"));
					vo.setIdeaIdIdea(rs.getInt("Idea_idIdea"));
					vo.setVotacion(rs.getInt("Votacion"));
					vo.setInvitadoIdInvitado(rs.getInt("Invitado_idInvitado")); 
					c.add(vo);
				}

			} catch (SQLException e) {
				System.err.println(e.getMessage());
				throw new DAOExcepcion(e.getMessage());
			} finally {
				this.cerrarResultSet(rs);
				this.cerrarStatement(stmt);
				this.cerrarConexion(con);
			}
			return c;
		}
		 

}
